iT邦幫忙

2024 iThome 鐵人賽

DAY 25
1
佛心分享-SideProject30

未來IT將來系列 第 25

未來IT將來2024.25「物聯網(IoT)已來就用MQTT來實作」

  • 分享至 

  • xImage
  •  

MQTT ( Message Queuing Telemetry Transport ) 的設計目的,是將訊息用最精簡的方式傳送出去,並且使用較少的網路頻寬和電力。
由於 MQTT 具備可靠性高、可擴展性強、網路傳輸效率高⋯⋯等特點,故廣泛應用於各種場景中,例如物聯網、Facebook Messenger 等即時通訊。

一、引言

物聯網(IoT)技術正迅速成為現代社會中不可或缺的一部分,無論是智慧家居、智能城市還是工業自動化,IoT的應用場景無處不在。而在這些應用中,可靠且輕量級的通訊協定至關重要。MQTT(Message Queuing Telemetry Transport)作為一種輕量級的通訊協定,已經成為物聯網中設備間通訊的首選協定。本文將探討MQTT在物聯網中的應用,並介紹如何通過MQTT實作一個簡單的物聯網系統。

二、MQTT協定的基本原理

  1. MQTT的特性
    MQTT是一種發布/訂閱模式的網路通訊協定,設計之初主要為了解決低帶寬、不穩定網路環境下的資料傳輸問題。它具有以下幾個顯著特點:
    • 輕量級:MQTT協定頭部僅需2個字節,非常適合在資源受限的設備上運行。
    • 低延遲:MQTT使用TCP/IP協定進行傳輸,支持QoS(Quality of Service)等級,保證了訊息的傳遞速度和可靠性。
    • 靈活性:通過主題(Topic)進行訊息的發布與訂閱,支持一對一、一對多的訊息傳遞模式。
  2. MQTT的運作模式
    MQTT的運作模式簡單而高效,通常涉及三個主要元件:發布者(Publisher)、訂閱者(Subscriber)和中介(Broker)。
    • 發布者:發送訊息的設備,將訊息發布到某個特定的主題上。
    • 訂閱者:訂閱特定主題的設備,接收來自該主題的訊息。
    • 中介:MQTT的核心元件,負責管理主題、處理發布者和訂閱者之間的訊息傳遞。
    這種結構使得MQTT非常適合於IoT應用中的多設備通訊場景,尤其是那些需要即時更新和多點資料同步的情境。

三、物聯網中MQTT的實作

  1. 架設MQTT Broker
    在實作物聯網系統之前,首先需要架設MQTT Broker。Mosquitto是一款開源的MQTT Broker,因其輕量級且容易部署的特點,廣泛應用於各種IoT項目中。
    步驟:
    1. 安裝Mosquitto:在Linux系統中可以通過以下指令安裝:
       sudo apt-get install mosquitto mosquitto-clients
       ```
    2. 啟動Mosquitto:安裝完成後,可通過以下指令啟動Mosquitto服務:
   sudo systemctl start mosquitto
   ```
  1. 開發MQTT客戶端
    在架設好MQTT Broker後,下一步是開發MQTT客戶端。MQTT客戶端負責發布和訂閱訊息,常用的開發工具包括Python、JavaScript等。
    Python範例:
    1. 安裝paho-mqtt套件:
       pip install paho-mqtt
       ```
    2. 編寫簡單的MQTT發布者與訂閱者:
   import paho.mqtt.client as mqtt
   ```
   # 設定 MQTT Broker 的 IP 和 Port
   broker = "localhost"
   port = 1883
   topic = "iot/test"
   
   # 定義發布者
   def publish_message():
       client = mqtt.Client()
       client.connect(broker, port)
       client.publish(topic, "Hello MQTT")
       client.disconnect()
   
   # 定義訂閱者
   def on_message(client, userdata, msg):
       print(f"Received message: {msg.payload.decode()} on topic {msg.topic}")
   
   def subscribe_message():
       client = mqtt.Client()
       client.connect(broker, port)
       client.subscribe(topic)
       client.on_message = on_message
       client.loop_forever()
   
   # 測試發送與接收訊息
   publish_message()
   subscribe_message()
  1. 整合多個設備與感測器
    在實際的IoT應用中,MQTT通常用於整合多個感測器與設備。例如,智慧家居中的溫度感測器、門窗感測器、燈光控制器等設備可以通過MQTT協定相互通訊。這些設備作為MQTT客戶端,分別扮演發布者和訂閱者的角色,實現整體系統的協同工作。

四、MQTT在物聯網中的應用案例

  1. 智慧家居系統
    在智慧家居系統中,MQTT可用於連接各種家用設備。例如,當溫度感測器檢測到室內溫度過高時,通過MQTT協定向空調設備發送開啟指令,同時向用戶的手機推送通知。
  2. 工業自動化
    在工業自動化中,MQTT可用於監控和控制各種生產設備。例如,生產線上的各種感測器通過MQTT協定向中央控制系統發送數據,控制系統根據接收到的數據進行決策並發出指令。

五、結語

MQTT作為物聯網中重要的通訊協定,具有輕量級、低延遲和高靈活性的特點,非常適合應用於各種IoT場景。本文通過對MQTT協定的基本原理、實作步驟以及應用案例的探討,展示了MQTT在物聯網中的廣泛應用前景。隨著物聯網技術的不斷發展,MQTT將在未來的智慧化系統中扮演越來越重要的角色。
當然人也可以是物聯網的一部份且是主人,萬物互聯將是「物聯網(IoT)的MQTT」實作未來最重要的課題。
AI會讓物聯網跳躍到「智聯網」,在進入「智聯網」前對底層的MQTT實作還是要有所了解,加油!
參考網址
• Mosquitto MQTT Broker https://mosquitto.org/
• paho-mqtt Python Library https://pypi.org/project/paho-mqtt/
• MQTT協定介紹 https://mqtt.org/
• 物聯網中的MQTT應用 https://resource.webduino.io/blog/mqtt-guide


上一篇
未來IT將來2024.24「程式交易」已來-以<薩姆規則衰退指標>實作
系列文
未來IT將來25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言